package xyz.sekai52799.answer.a1001_a1200;

public class Question1144 {
//    给你一个整数数组nums，每次 操作会从中选择一个元素并 将该元素的值减少1。
//
//    如果符合下列情况之一，则数组A就是 锯齿数组：
//
//    每个偶数索引对应的元素都大于相邻的元素，即A[0] > A[1] < A[2] > A[3] < A[4] > ...
//    或者，每个奇数索引对应的元素都大于相邻的元素，即A[0] < A[1] > A[2] < A[3] > A[4] < ...
//    返回将数组nums转换为锯齿数组所需的最小操作次数。
//
//
//
//    示例 1：
//
//    输入：nums = [1,2,3]
//    输出：2
//    解释：我们可以把 2 递减到 0，或把 3 递减到 1。
//    示例 2：
//
//    输入：nums = [9,6,1,6,2]
//    输出：4
//
//
//    提示：
//
//            1 <= nums.length <= 1000
//            1 <= nums[i] <= 1000
//

    public static int movesToMakeZigzag(int[] nums) {
        return Math.min(countTimes(nums, 0), countTimes(nums, 1));
    }

    private static int countTimes(int[] nums, int position){
        int count = 0;
        for (int i = position; i < nums.length; i = i+2){
            int temp = 0;
            if (i - 1 >= 0){
                temp = Math.max(nums[i] - nums[i-1] + 1 , temp);
            }
            if (i+1 < nums.length){
                temp = Math.max(nums[i] - nums[i+1] + 1 , temp);
            }
            count = count + temp;
        }
        return count;
    }
}
